//
// Created by LiuYou on 2021/7/18.
//

#ifndef LEARNCLION2_MONSTER_HPP
#define LEARNCLION2_MONSTER_HPP


#include <string>
#include <ostream>

class Monster {
private:
    std::string name;
protected:
    int power = 100;
    int size;
    int score = 0;
public:
    virtual void fight() = 0;

    virtual void eat() = 0;

    int getSize() const;

    bool operator<(const Monster& rhs) const;

    bool operator>(const Monster& rhs) const;

    bool operator<=(const Monster& rhs) const;

    bool operator>=(const Monster& rhs) const;

    bool operator==(const Monster& rhs) const;

    bool operator!=(const Monster& rhs) const;

    void setSize(int size);

    const std::string& getName() const;

    std::basic_string<char> setName(const std::string& name);

    Monster(int size, const std::string& name);

    friend std::ostream& operator<<(std::ostream& os, const Monster& monster);
};


#endif //LEARNCLION2_MONSTER_HPP
